import router from '@/router';
import { initBackEndRoutes } from './backEnd';
import { useAuthStore } from '@/stores/auth';

// 白名单
const whiteList = ['/login'];

// 路由前置守卫
router.beforeEach(async (to, from, next) => {
    const authStore = useAuthStore();
    // 获取访问令牌
    const hasToken = authStore.accessToken;
    if (hasToken) {
        if (to.path === '/login') {
            next({ path: '/' });
        } else {
            // 获取用户拥有的菜单权限信息
            if (!authStore.userInfo || authStore.menuList.length <= 0) {
                await initBackEndRoutes();
                return next({path: to.path, query: to.query});
            } else {
                return next();
            }
        }
    } else {
        // 未登录
        if (whiteList.indexOf(to.path) !== -1) {
            // 在免登录白名单，直接进入
            return next();
        } else {
            // 其他没有访问权限的页面被重定向到登录页面
            return next(`/login?redirect=${to.path}`);
        }
    }
});
